/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package managers;

import DAO.UsuarioDAO;
import JPA.JPAUsuarioDAO;
import domain.Entity.EntityDireccion;
import domain.Entity.EntityGestor;
import domain.Entity.EntityPerfil;
import domain.Entity.EntityProyecto;
import domain.Entity.EntityTarea;
import domain.Entity.EntityTareaTrabajada;
import domain.Entity.EntityTrabajador;
import domain.Entity.EntityUsuario;
import java.util.Date;
import java.util.List;

/**
 *
 * @author jorge
 */
public class UsuarioManager {

     private UsuarioDAO usuario;
     private static UsuarioManager instance = null;
        
  	
        public static synchronized UsuarioManager getInstance(){
		if(instance == null){
			instance = new UsuarioManager();
			return instance;
		}
		else
			return instance;
	}
        
	
	private UsuarioManager(){
		this.usuario =new JPAUsuarioDAO();
	}
	
	public EntityUsuario get(String nombre){
    	return this.usuario.obtenerUsuario(nombre);
        }
        
        public EntityTrabajador getTrabajador(long dni){
    	return this.usuario.obtenerTrabajador(dni);
        }
        
        public void addGestor(EntityGestor eg){
    	 this.usuario.anadirGestor(eg);
        }
        
        public void addTrabajador(EntityTrabajador et){
    	 this.usuario.anadirTrabajador(et);
        }
        
        public List mostrarTrabajadoresGestor(Long dni){
           return this.usuario.TrabajadoresGestor(dni);
        }
        
       public EntityTrabajador borrarTrabajador(Long dni){
          return this.usuario.borrarTrabajador(dni);
       }
       
        
       public EntityGestor obetenerGestor(long dni){
           return this.usuario.obtenerGestor(dni);
       }
        
       public EntityPerfil obetenerPerfilUsuario(long dni){
           return this.usuario.obtenerPerfil(dni);
       }
       
       public EntityDireccion obetenerDireccionUsuario(long idPerfil){
           return this.usuario.obtenerDireccion(idPerfil);
       }
       
       public void modificarPerfil(EntityPerfil ep, EntityDireccion ed){
            this.usuario.modificarPerfil(ep, ed);
       }
       
       public void trabajar(EntityTareaTrabajada ett, EntityTrabajador etr, EntityTarea et, EntityProyecto ep){
            this.usuario.trabajarTarea(ett,etr,et,ep);
       }
       
       public List tiempoTrabajadoTarea(EntityTrabajador etr, EntityTarea et){
           return this.usuario.obtenerTiempoTrabajadoTarea(etr,et);
       }
       
       public List tareasTrabajadasFecha(EntityTrabajador etr, Date fecha){
           return this.usuario.obetenerTareasTrabajadas(etr,fecha);
       }
       
       public List trabajorealizadoFechas(Date fechaIni,EntityTrabajador trabajador,Date fechaFin){
           return this.usuario.trabajoRealizadoFechas(fechaIni, trabajador, fechaFin);
       }
}
